Microsoft SQL Server - Siglas e Termos

Índices de tabelas

Se uma tabela não possuí índices ela é chamada de heap e cada pesquisa nela gera um 'table-scan', ou seja, a pesquisa vai do começo ao fim da tabela procurando onde tem o dado pesquisado. Se a tabela é pequena, sem problemas...um acesso ao disco traz todos os dados dela. Mas se a tabela é grande a gente 'senta e chora'...técnicamente nenhuma pesquisa deve demorar mais que 30 segundos no sql. Note que se a pesquisa for necessária para atendimento de clientes 30 segundos é muito tempo.

Por isso criamos índices. Índices são atalhos ( apontam ) para onde encontram-se os dados de acordo com o valor de um ou mais campos da tabela. Uma pesquisa que demora 2 minutos para ser feita, com índices pode demorar 2 segundos para ser feita.

Regra: Jamais os índices devem ter mais que 50% do tamanho da tabela para a qual apontam. A partir desse ponto eles mais atrapalham que ajudam - A manutenção dos índices é custosa para o SQL, mas um mal necessário.

Fundamentais - Índices Clusterizados ou não

Uma tabela pode ter um índice clusterizado ou não. Quando tem um índice clusterizado as páginas das tabelas são organizadas de maneira que os dados e os índices fiquem juntos na mesmo 'bloco' de dados do disco. Sendo assim, na pesquisa do índice ao encontrar o índice os dados referentes a ele estão na mesma página e não será necessário fazer outro acesso a disco para buscar os dados. Portanto, uma tabela clusterizada é formatada para que dados e índices fiquem juntos, na mesmo 'bloco' de dados do disco.

Com certeza o índice clusterizado é o mais rápido que o não clusterizado, mas só podemos ter um índice clusterizado por tabela.

Quando a tabela tem um índice não clusterizado os índices apontam para a página onde os dados estão. Sendo assim depois de achar o índice é necessário ler outro 'bloco' de dados do disco onde realmente os dados estão.

Uma tabela que tem um índice clusterizado é chamada de uma tabela clusterizada ( Clustered table ).
Todos sabemos que a ordem com que a informação é armazenada na tabela é ditada pelo índice tornando esse índice o mais preciso possível mas também o torna único, ou seja, só podemos ter um índice clusterizado por tabela.
Uma pesquisa num índice clusterizado consiste em achar onde começa o dado que atende a pesquisa solicitada e, como os dados fisicamente já estão ordenados, trazer todos até encontrar um que não atenda a pesquisa.

Uma tabela que NÃO tem um índice clusterizado é chamada de uma tabela tipo heap. Neste caso o índice é externo a tabela como uma série de ponteiros apontando para os dados.
Uma pesquisa utilizando um índice numa tabela heap consiste em varrer o índice, buscar os índices que atendam a pesquisa e posteriormente, carregar cada página de dados que contenha uma informação que atenda a pesquisa. Se a tabela for grande esta pesquisa é centenas de vezes mais pesadas que com um índice clusterizado.

Fundamentais - Segurança

O SQL server na sua instalação é 'secure by default', ou seja, 'seguro por default'. Sendo assim para utilizar ele, por exemplo, numa rede precisamos pedir para o SQL 'ativar' o protocolo TCP-IP, abrir Firewalls. Contudo existe uma regra para essa 'abertura da área de serviço' ou 'exposição do servidor'. Por exemplo, ninguém faz uma segurança integrada com um servidor sql que está conectado a Internet. Essas regras são conhecidas pelos bons administradores de bancos de dados e, se não forem, o servidor estará em risco e, normalmente, só será descoberto quando for tarde demais.

Fundamentais - Métricas de BI

Suponha que você gerencie um negócio e para isto você precisa ter informações básicas de vendas e custos da empresa. Aliás o gerenciamento de empresas só é possível se você tiver métricas ( informações ) que permitam conduzir a empresa da melhor maneira possível, pois gerenciamento e sinônimo de controle e controle é sinônimo de dados.

A transformação dos dados de venda em informações que permitem tomar ações gerenciais que possam melhorar as vendas são chamadas de métricas de vendas.

Notem que sob o prisma aqui citado teríamos um 'efeito póstumo' pois a métrica só seria possível depois da realização da venda. Contudo podemos tentar 'futurizar' essa métrica como, por exemplo, pagar uma comissão ao vendedor se ele fizesse uma previsão de venda para o mês seguinte e se isto se concretizasse. A comissão só seria paga se ele acertasse a previsão.

Siglas Gerais

Sigla Significado Detalhe
RI Referencial Integrity Integridade referencial - Por exemplo, um campo filho aponta para um pai que tem que existir.
BI Bussiness Intelligence Inteligencia do Negócio - Visa obter métricas para tomada de decisões como vendas de um produto.
TDS Tabular Data Stream Fluxo de dados tabulados - Ocorre quando enviamos as informações estruturadas de acordo com um critério como colunas de uma tabela.
IS Integration Services Serviços de integração - Visam conectar servidores e trocar informações de maneira que cada servidor, embora com os mesmos dados, possam ter 'visões' diferentes desses dados ( como agrupamento dos dados ).
UI User Interface Tipicamente é a camada de apresentação que exibe os dados ao cliente. Num browser, por exemplo, podemos ter os dados alinhados em tabelas e suas linhas coloridas (zebradas).
ETL Extract, Transform, Load Extração, transformação e carga. É o processo típico de transferência de dados de um servidor para outro. A transformação é a função que permite que os servidores, mesmo com os mesmos dados, tenham informações diferente, por exemplo, agrupados por trimestre.
RPC Remote Procedure Call Chamada de uma função remota - Ocorre quando chamamos um componente que tem a funcionalidade de fazer o meio de campo entre nossa app e um servidor, como é o caso do ADO no SQL Server.
ACID Atomic-Consistent-Isolated-Durable Fundamento de um servidor SQL:
1-Atomic - Tudo ou nada - Ou realiza toda a tarefa ou nada da tarefa.
2-Consistent - Começa o processo com uma estrutura consistente de dados e termina num estado consistente ( Sem erros ) de dados.
3-Isolated-Isolado - Um usuário não interfere no que o outro usuário esta obtendo.
4-Durable - Durável - O dado estará lá sempre que necessário e por quanto for necessário.
DML - DDL - DCL Data Manipulation Language - Data Description Language - Data Control Language São os 3 tipos de declarações SQL que podemos fazer :
1-DML : Linguagem de Manipulação de Dados - Os famosos Insert, Delete, Update, etc. - Alteram os dados.
2-DDL - Linguagem de Descrição de Dados - São os famosos create table, trigger, etc. - Alteram a estrutura da informação armazenada.
3-DCL - Linguagem de Controle de dados - São os famosos Triggers, Integridade referencial, etc. São todos comandos SQL que visam controlar o fluxo de informações dentro de seu armazenamento.
PBM Policy Based Management Gerenciamento baseado em Politicas ou Policias - Quando o gerenciamento é feito em multicamadas como no SQL onde diversos componentes podem determinar o que o usuário tem acesso ou não. Por exemplo, o usuário existe no servidor. Ele pode ser associado a um grupo ou não. A permissão para ele ou para o grupo pode ser dado a uma tabela específica.
IFS Integrated Full-Text Search Pesquisa por Texto Integral - Esta técnica é muito útil quando fazemos pesquisa por índices que são puramente campos textos longos. É um pesadelo de performance que essa técnica resolve criando 'índices(hash)' que agilizam muito a pesquisa.
SMO Server Management Objects Objetos de gerenciamento do Servidor - São os objetos que visam expor o funcionamento interno do servidor SQL para seus gerenciadores como o lock de tabelas, quem está executando qual tarefa, o que está 'gargalando' um processo, etc.
DTC Distributed Transaction Coordinator Coordenador e distribuidor de transações - É um proesso que dispara e controla processos de maneira coordenada para que façam uma tarefa. Essa 'coordenação' envolve tratamento de falhas, processos paleativos, etc.
AS Analisys Services Serviços de Análise - São serviços que visam obter métricas para gerenciar uma função da empresa. Por exemplo, se um produto está vendendo bem, se as vendas aumentaram ou cairam no último trimestre, ou seja, qualquer métrica que interesse ao gerenciamento da empresa.
OLAP On-Line Analytical Processing Processamento de análise de dados On-Line - Visa transformar os dados do dia-a-dia da empresa ( obtidos via OLTP ) em métricas empresariais do tipo aglutinar as vendas do dia-a-dia por trimestre para saber se as vendas estão aumentando ou diminuindo com o passar do ano.
MDX MultiDimensioinal Expressions São expressões que ao invés de retornar um dado como o número de vendas de um produto retorna as vendas de produtos por trimestre na empresa. Veja Cubo de dados.
BCP Bulk-Copy Interations Interação de cópia de dados nativos - É um processo de carga maciça de dados de uma tabela para outra, por exemplo, onde os dados são transferidos, por exemplo, em texto simples. É um processo muito eficiente mas muito sujeito a erros na carga.
BOL Books On-Line Livros On-Line - São a documentação sobre o SQL Server na Internet. Muito úteis.
OLTP On-Line Transactions Processing Processamento de transações on-line. É o processo típico do SQL Server onde uma venda de um produto pode ser armazenado numa tabela. Armazena o dia-a-dia da empresa e possibilita uma visão 'real', 'on-line' do andamento da empresa contudo um visão de realizado, nunca de futuro.
DW Data WareHouses Datacenters de Dados - Seriam os Big-Datas das empresas onde elas aglutinavam todas as informações que puderam obter num ou num grupo de servidores. Note que um Data WareHouse pode ter um conjunto de DataMarts.
DataMart DataMart É um conjunto de dados específicos para obtenção de um resultado. Normalmente é obtido do OLTP e agrega uma 'visão' sobre um item importante a ser gereciado como as vendas de uma empresa. Nesta visão ( de vendas ), por exemplo, não precisariamos ter os dados dos clientes ou mesmo dos produtos vendidos mas sim sobre as vendas.
EAV Entity-Attribute value É a associação que existe entre uma entidade e seu valor, por exemplo, em vendas o sapato A vendeu 200 peças no mês. Note que sempre há um contexto por tras da informação, ( peças / mês ).
XNF X Normal Form Informa que o dado atende a regra X de normalização. Por exemplo 1NF atende a primeira regra de normalização. veja regras de normalização.
BCNF Boyce-Codd Normal Form Veja acima XNF. É uma melhoria da terceira regra de Normalização (3NF). Basicamente toda a redundância baseada na dependência funcional é removida, embora outros tipos de redundância ainda possam existir.
SAN Storage Area Network/td> Área da Rede de Armazenamento - São, normalmente, discos disponíveis para armazenamento em uma rede. Esta rede era costumeiramente local mas hoje está se tornando comum termos SANs ou SAS na nuvem.
DAS Directed Attached Storage Armazenamento diretamente conectado - Este tipo de configuração destina-se a eliminar o tempo de latencia entre a solicitação e o armazenamento da informação. Técnicamente quanto mais perto mais rápido é o processo mas com a núvem esse critério não é mais sempre verdade.
SSMA SQL Sever Migration Assistant Assistente de Migração do SQL Server - É um utilitário muito útil na migração de uma versão do SQL Server para outra versão, normalmente mais nova e com mais recursos e que, nem sempre, funciona da mesma maneira que o antigo.
SNAC SQL Server Native Client É um componente instalado para que uma aplicação acesse nativamente as informações do SQL Server. No Visual Studio é feito pelo ADO e conta com a colaboração do System.Data interno ao Framework para completar a troca de informações.
IPC InterProcess Configurations Protocol Protocoloo de configuração inter-processos - São as informações trocadas que não obrigatoriamente são dados como os tipos dos dados trocados ( inteiro, strings, etc.). Digamos que são as informações que transferem o 'significado' da informação de um lado para o outro.
SSMS SQL Server Management Studio Pacote de gerenciamento do SQL Server - todo DBA SQL Server ama essa ferramenta. Ela possibilita gerenciar os Servidores SQL sejam um único ou um conjunto de servidores de maneira espetacularmente conduzida.
DAC Dedicated Administrator Connection Conexão dedicada com o Administrador - Ocorre quando colocamos o banco de dados em Single-User, ou seja, só o administrador ou owner consegue se conectar a ele. Destina-se a tarefas pesadas de manutenção e retira o banco de dados do ar enquanto perdurar.
CEC Common Engennering Criteria Estabelece um conjunto de requisitos de engenharia em todos os produtos de servidor da Microsoft com o nosso objetivo de reduzir o custo total de propriedade (TCO) por meio de integração, gerenciamento, segurança, confiabilidade e outros atributos críticos de infraestrutura aprimorados.
RMO Replication Management Objects São os objetos de replicação de dados que permitem verificar e controlar a resplicação de informações entre servidores.
DRI Declarative Referential Integrity É uma propriedade de dados que informam que todas as suas referências são válidas. No contexto de bancos de dados relacionais, requer que se um valor de um atributo (coluna) de uma relação (tabela) faz referência a um valor de outro atributo (seja na mesma ou em uma relação diferente), então o valor referenciado deve existir.
Key Columns Colunas Chaves São as colunas que são utilizadas como chaves em pesquisas.
DMV Dinamic Management Views São as views do SQL Server que permitem o gerenciamento on-line das atividades do servidor como locks de tabelas, quem está executando o que, etc.
TVP Table-Valued Parameters Ocorre quando a informação é enviada num contexto de colunamento em tabelas. Por exemplo, se você tentar importar um dado para uma tabela errada e elas não tiverem exatamente a mesma estrutura com este método ocorrerá um erro.
SDS SQL Data Services São basicamente os serviços de SQL Server na nuvem. Esses serviços oferecem o armazenamento de dados no SQL Server como seviço. Exemplos básicos destes serviços é o Azure da Microsoft ou AWS da Amazon.
BIDS Bussiness Intelligence Development Studio É a ferramenta básica para desenvolvimento de BI no SQL Server. É como o SQL Server Management Studio para o OLTP. Permite trabalhar com o serviço de integração ( Integration Services ) e os serviços de OLAP gerando 'cubos' de informação fundamentais paras as métricas de BI.